//test_array.ts


// 导出四个函数
export function baselineTest(size: i32): void {
    const array2 = new Uint32Array(size * 4);  // 每个元素占4个字节
    let array2Ptr: usize = changetype<usize>(array2.buffer);

    for (let i = 0; i < size; i++) {
        const value = i + 1;
        store<u32>(array2Ptr + (i * 4), value);
    }
}

export function noInputWithOutput(size: i32): usize {
    const array2 = new Uint32Array(size * 4); // 每个元素占4个字节
    let array2Ptr: usize = changetype<usize>(array2.buffer);

    for (let i = 0; i < size; i++) {
        const value = i + 1;
        store<u32>(array2Ptr + (i * 4), value);
    }

    return array2Ptr;
}


export function withInputNoOutput(inputArray: Uint32Array, size: i32): void {
    const array2 = new Uint32Array(size * 4);  // 每个元素占4个字节
    let array2Ptr: usize = changetype<usize>(array2.buffer);
    for (let i = 0; i < size; i++) {
        const value = i + 1;
        store<u32>(array2Ptr + (i * 4), value);
    }
}
 
/*
export function withInputNoOutput(inputArray: Uint32Array, size: i32): usize {
    const array2 = new Uint32Array(size * 4);  // 每个元素占4个字节
    let array2Ptr: usize = changetype<usize>(array2.buffer);
    for (let i = 0; i < size-1; i++) {
        const value = 1;
        store<u32>(array2Ptr + (i * 4), value);
    }
    // 获取 inputArray 的最后一个元素
    const value = inputArray[inputArray.length - 1];
    // 在内存中分配空间存储最后一个元素
    store<u32>(array2Ptr + ((size-1)* 4), value);
    // 返回 ans 的指针
    return array2Ptr;
}

*/



export function withInputAndOutput(inputArray: Uint32Array, size: i32): usize {
    const array2 = new Uint32Array(size * 4);  // 每个元素占4个字节
    let array2Ptr: usize = changetype<usize>(array2.buffer);

    for (let i = 0; i < size; i++) {
        const value = i + 1;
        store<u32>(array2Ptr + (i * 4), value);
    }

    return array2Ptr;
}



